Real-Time Dynamic Tracking of Bias

ABSTRACT

A bias value associated with a sensor, e.g., a time-varying, non-zero value which is output from a sensor when it is motionless, is estimated using at least two, different bias estimating techniques. A resultant combined or selected bias estimate may then be used to compensate the biased output of the sensor in, e.g., a 3D pointing device.

RELATED APPLICATION

This application is related to, and claims priority from, U.S.Provisional Patent Application Ser. No. 60/937,596, filed on Jun. 28,2007, entitled “Real-Time Dynamic Tracking of Time-Varying Bias in 3DPointing Devices”, the disclosure of which is incorporated here byreference.

BACKGROUND

The present invention describes bias tracking techniques, systems,software and devices, which can be used in 3D pointing devices, as wellas in other types of devices.

Technologies associated with the communication of information haveevolved rapidly over the last several decades. Television, cellulartelephony, the Internet and optical communication techniques (to namejust a few things) combine to inundate consumers with availableinformation and entertainment options. Taking television as an example,the last three decades have seen the introduction of cable televisionservice, satellite television service, pay-per-view movies andvideo-on-demand. Whereas television viewers of the 1960s could typicallyreceive perhaps four or five over-the-air TV channels on theirtelevision sets, today's TV watchers have the opportunity to select fromhundreds, thousands, and potentially millions of channels of shows andinformation. Video-on-demand technology, currently used primarily inhotels and the like, provides the potential for in-home entertainmentselection from among thousands of movie titles.

The technological ability to provide so much information and content toend users provides both opportunities and challenges to system designersand service providers. One challenge is that while end users typicallyprefer having more choices rather than fewer, this preference iscounterweighted by their desire that the selection process be both fastand simple. Unfortunately, the development of the systems and interfacesby which end users access media items has resulted in selectionprocesses which are neither fast nor simple. Consider again the exampleof television programs. When television was in its infancy, determiningwhich program to watch was a relatively simple process primarily due tothe small number of choices. One would consult a printed guide which wasformatted, for example, as series of columns and rows which showed thecorrespondence between (1) nearby television channels, (2) programsbeing transmitted on those channels and (3) date and time. Thetelevision was tuned to the desired channel by adjusting a tuner knoband the viewer watched the selected program. Later, remote controldevices were introduced that permitted viewers to tune the televisionfrom a distance. This addition to the user-television interface createdthe phenomenon known as “channel surfing” whereby a viewer could rapidlyview short segments being broadcast on a number of channels to quicklylearn what programs were available at any given time.

Despite the fact that the number of channels and amount of viewablecontent has dramatically increased, the generally available userinterface, control device options and frameworks for televisions has notchanged much over the last 30 years. Printed guides are still the mostprevalent mechanism for conveying programming information. The multiplebutton remote control with up and down arrows is still the mostprevalent channel/content selection mechanism. The reaction of those whodesign and implement the TV user interface to the increase in availablemedia content has been a straightforward extension of the existingselection procedures and interface objects. Thus, the number of rows inthe printed guides has been increased to accommodate more channels. Thenumber of buttons on the remote control devices has been increased tosupport additional functionality and content handling, e.g., as shown inFIG. 1. However, this approach has significantly increased both the timerequired for a viewer to review the available information and thecomplexity of actions required to implement a selection. Arguably, thecumbersome nature of the existing interface has hampered commercialimplementation of some services, e.g., video-on-demand, since consumersare resistant to new services that will add complexity to an interfacethat they view as already too slow and complex.

In addition to increases in bandwidth and content, the user interfacebottleneck problem is being exacerbated by the aggregation oftechnologies. Consumers are reacting positively to having the option ofbuying integrated systems rather than a number of segregable components.An example of this trend is the combination television/VCR/DVD in whichthree previously independent components are frequently sold today as anintegrated unit. This trend is likely to continue, potentially with anend result that most if not all of the communication devices currentlyfound in the household will be packaged together as an integrated unit,e.g., a television/VCR/DVD/internet access/radio/stereo unit. Even thosewho continue to buy separate components will likely desire seamlesscontrol of, and interworking between, the separate components. With thisincreased aggregation comes the potential for more complexity in theuser interface. For example, when so-called “universal” remote unitswere introduced, e.g., to combine the functionality of TV remote unitsand VCR remote units, the number of buttons on these universal remoteunits was typically more than the number of buttons on either the TVremote unit or VCR remote unit individually. This added number ofbuttons and functionality makes it very difficult to control anythingbut the simplest aspects of a TV or VCR without hunting for exactly theright button on the remote. Many times, these universal remotes do notprovide enough buttons to access many levels of control or featuresunique to certain TVs. In these cases, the original device remote unitis still needed, and the original hassle of handling multiple remotesremains due to user interface issues arising from the complexity ofaggregation. Some remote units have addressed this problem by adding“soft” buttons that can be programmed with the expert commands. Thesesoft buttons sometimes have accompanying LCD displays to indicate theiraction. These too have the flaw that they are difficult to use withoutlooking away from the TV to the remote control. Yet another flaw inthese remote units is the use of modes in an attempt to reduce thenumber of buttons. In these “moded” universal remote units, a specialbutton exists to select whether the remote should communicate with theTV, DVD player, cable set-top box, VCR, etc. This causes many usabilityissues including sending commands to the wrong device, forcing the userto look at the remote to make sure that it is in the right mode, and itdoes not provide any simplification to the integration of multipledevices. The most advanced of these universal remote units provide someintegration by allowing the user to program sequences of commands tomultiple devices into the remote. This is such a difficult task thatmany users hire professional installers to program their universalremote units.

Some attempts have also been made to modernize the screen interfacebetween end users and media systems. However, these attempts typicallysuffer from, among other drawbacks, an inability to easily scale betweenlarge collections of media items and small collections of media items.For example, interfaces which rely on lists of items may work well forsmall collections of media items, but are tedious to browse for largecollections of media items. Interfaces which rely on hierarchicalnavigation (e.g., tree structures) may be speedier to traverse than listinterfaces for large collections of media items, but are not readilyadaptable to small collections of media items. Additionally, users tendto lose interest in selection processes wherein the user has to movethrough three or more layers in a tree structure. For all of thesecases, current remote units make this selection processor even moretedious by forcing the user to repeatedly depress the up and downbuttons to navigate the list or hierarchies. When selection skippingcontrols are available such as page up and page down, the user usuallyhas to look at the remote to find these special buttons or be trained toknow that they even exist. Accordingly, organizing frameworks,techniques and systems which simplify the control and screen interfacebetween users and media systems as well as accelerate the selectionprocess, while at the same time permitting service providers to takeadvantage of the increases in available bandwidth to end user equipmentby facilitating the supply of a large number of media items and newservices to the user have been proposed in U.S. patent application Ser.No. 10/768,432, filed on Jan. 30, 2004, entitled “A Control Frameworkwith a Zoomable Graphical User Interface for Organizing, Selecting andLaunching Media Items”, the disclosure of which is incorporated here byreference.

Of particular interest for this specification are the remote devicesusable to interact with such frameworks, as well as other applicationsand systems. As mentioned in the above-incorporated application, variousdifferent types of remote devices can be used with such frameworksincluding, for example, trackballs, “mouse”-type pointing devices, lightpens, etc. However, another category of remote devices which can be usedwith such frameworks (and other applications) is 3D pointing devices.The phrase “3D pointing” is used in this specification to refer to theability of an input device to move in three (or more) dimensions in theair in front of, e.g., a display screen, and the corresponding abilityof the user interface to translate those motions directly into userinterface commands, e.g., movement of a cursor on the display screen.The transfer of data between the 3D pointing device may be performedwirelessly or via a wire connecting the 3D pointing device to anotherdevice. Thus “3D pointing” differs from, e.g., conventional computermouse pointing techniques which use a surface, e.g., a desk surface ormousepad, as a proxy surface from which relative movement of the mouseis translated into cursor movement on the computer display screen. Anexample of a 3D pointing device can be found in U.S. Pat. No. 7,118,518to Matthew G. Liberty (hereafter referred to as the '518 patent), thedisclosure of which is incorporated here by reference.

The '518 patent describes 3D pointing devices which include, forexample, one or two rotational sensors and an accelerometer. Therotational sensor(s) are used, as described in more detail below, todetect an angular rate at which the 3D pointing device is being rotatedby a user. However, the output of the rotational sensor(s) does notperfectly represent the angular rate at which the 3D pointing device isbeing rotated due to, for example, bias (also sometimes referred to as“offset”) in the sensor(s)' outputs. For example, when the 3D pointingdevice is motionless, the rotational sensor(s) will typically have anon-zero output due to their bias. If, for example, the 3D pointingdevice is used as an input to a user interface, e.g., to move a cursor,this will have the undesirable effect of cursor drifting across thescreen when the user intends for the cursor to remain stationary. Thus,in order to provide a 3D pointing device which accurately reflects theuser's intended movement, estimating and removing bias from sensoroutput is highly desirable. Moreover other devices, in addition to 3Dpointing devices, may benefit from being able to estimate and compensatefor the bias of inertial sensors. Making this process more challengingis the fact that the bias is different from sensor to sensor and, evenfor individual sensors, is time-varying, e.g., due to changes intemperature.

Accordingly, there is still room for improvement in the area of biasestimation and handheld device design, generally, and 3D pointer design,more specifically.

SUMMARY

According to one exemplary embodiment, a 3D pointing device includes atleast one inertial sensor for detecting rotation of said 3D pointingdevice about at least one axis and generating a first output associatedtherewith, an accelerometer for detecting acceleration of the 3Dpointing device and generating a second output associated therewith, anda processor for receiving the first and second outputs, determining abias value associated with the first output using at least a first biasestimation technique and a second bias estimation technique andcompensating the first output using the bias value.

According to another exemplary embodiment, a computer-readable mediumcontains instructions which, when executed on a processor, perform thestep of estimating a bias value associated with an inertial sensor usingat least a first bias estimating technique to generate a first biasestimate and a second bias estimating technique to generate a secondbias estimate.

According to another exemplary embodiment, a method for estimating biasassociated with an inertial sensor includes estimating the biasassociated with the inertial sensor using at least a first biasestimating technique to generate a first bias estimate and a second biasestimating technique to generate a second bias estimate.

According to still another exemplary embodiment, a processor includes afirst function for estimating bias associated with an inertial sensorusing a first bias estimation technique to generate first biasestimates, and a second function for estimating the bias associated withthe inertial sensor using a second bias estimation technique to generatesecond bias estimates.

According to yet another exemplary embodiment, a pointing deviceincludes at least one sensor for determining rotation of the pointingdevice about a first axis and generating a first output associatedtherewith and for determining rotation of the pointing device about asecond axis and generating a second output associated therewith, anaccelerometer for determining an acceleration of the pointing device andoutputting an acceleration output associated therewith, a temperaturesensor for detecting a temperature of the 3D pointing device andoutputting a temperature output associated therewith, and a processingunit for determining a bias estimate associated with the at least onerotational sensor using: (a) a first bias estimate technique forgenerating first bias estimate data based upon determining whether thepointing device is stationary using the first, second and third outputs,(b) a second bias estimate technique for generating second bias estimatedata based upon detection of a pitch of the pointing device using thefirst, second and third outputs, (c) a third bias estimate technique forgenerating third bias estimate data based upon slew-rate filtering usingthe first and second outputs, and (d) a fourth bias estimate techniquefor generating fourth bias estimate data based upon the temperatureoutput and the first and second outputs.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings illustrate exemplary embodiments, wherein:

FIG. 1 depicts a conventional remote control unit for an entertainmentsystem;

FIG. 2 depicts an exemplary media system in which exemplary embodimentscan be implemented;

FIG. 3 shows a 3D pointing device according to an exemplary embodimentof the present invention;

FIG. 4 illustrates a cutaway view of the 3D pointing device in FIG. 4including two rotational sensors and one accelerometer;

FIG. 5 shows a 3D pointing device according to another exemplaryembodiment;

FIG. 6 depicts the 3D pointing device of FIG. 5 being used as part of a“10 foot” interface according to an exemplary embodiment;

FIG. 7 illustrates bias estimation according to an exemplary embodiment;

FIG. 8( a) is a diagram illustrating an exemplary rotation sequenceaccording to an exemplary embodiment;

FIG. 8( b) illustrates an exemplary recursive least squares (RLS)algorithm which can be used according to an exemplary embodiment;

FIG. 9 is a flow chart illustrating a method of bias estimationaccording to an exemplary embodiment; and

FIG. 10 illustrates hardware elements of a 3D pointing device accordingto an exemplary embodiment.

DETAILED DESCRIPTION

The following detailed description of the invention refers to theaccompanying drawings. The same reference numbers in different drawingsidentify the same or similar elements. Also, the following detaileddescription does not limit the invention. Instead, the scope of theinvention is defined by the appended claims.

In order to provide some context for this discussion, an exemplaryaggregated media system 200 in which the present invention can beimplemented will first be described with respect to FIG. 2. Thoseskilled in the art will appreciate, however, that the present inventionis not restricted to implementation in this type of media system andthat more or fewer components can be included therein. Therein, aninput/output (I/O) bus 210 connects the system components in the mediasystem 200 together. The I/O bus 210 represents any of a number ofdifferent of mechanisms and techniques for routing signals between themedia system components. For example, the I/O bus 210 may include anappropriate number of independent audio “patch” cables that route audiosignals, coaxial cables that route video signals, two-wire serial linesor infrared or radio frequency transceivers that route control signals,optical fiber or any other routing mechanisms that route other types ofsignals.

In this exemplary embodiment, the media system 200 includes atelevision/monitor 212, a video cassette recorder (VCR) 214, digitalvideo disk (DVD) recorder/playback device 216, audio/video tuner 218 andcompact disk player 220 coupled to the I/O bus 210. The VCR 214, DVD 216and compact disk player 220 may be single disk or single cassettedevices, or alternatively may be multiple disk or multiple cassettedevices. They may be independent units or integrated together. Inaddition, the media system 200 includes a microphone/speaker system 222,video camera 224 and a wireless I/O control device 226. According toexemplary embodiments of the present invention, the wireless I/O controldevice 226 is a 3D pointing device according to one of the exemplaryembodiments described below. The wireless I/O control device 226 cancommunicate with the entertainment system 200 using, e.g., an IR or RFtransmitter or transceiver. Alternatively, the I/O control device can beconnected to the entertainment system 200 via a wire.

The entertainment system 200 also includes a system controller 228.According to one exemplary embodiment of the present invention, thesystem controller 228 operates to store and display entertainment systemdata available from a plurality of entertainment system data sources andto control a wide variety of features associated with each of the systemcomponents. As shown in FIG. 2, system controller 228 is coupled, eitherdirectly or indirectly, to each of the system components, as necessary,through I/O bus 210. In one exemplary embodiment, in addition to or inplace of I/O bus 210, system controller 228 is configured with awireless communication transmitter (or transceiver), which is capable ofcommunicating with the system components via IR signals or RF signals.Regardless of the control medium, the system controller 228 isconfigured to control the media components of the media system 200 via agraphical user interface described below.

As further illustrated in FIG. 2, media system 200 may be configured toreceive media items from various media sources and service providers. Inthis exemplary embodiment, media system 200 receives media input fromand, optionally, sends information to, any or all of the followingsources: cable broadcast 230, satellite broadcast 232 (e.g., via asatellite dish), very high frequency (VHF) or ultra high frequency (UHF)radio frequency communication of the broadcast television networks 234(e.g., via an aerial antenna), telephone network 236 and cable modem 238(or another source of Internet content). Those skilled in the art willappreciate that the media components and media sources illustrated anddescribed with respect to FIG. 2 are purely exemplary and that mediasystem 200 may include more or fewer of both. For example, other typesof inputs to the system include AM/FM radio and satellite radio.

More details regarding this exemplary entertainment system andframeworks associated therewith can be found in the above-incorporatedby reference U.S. patent application “A Control Framework with aZoomable Graphical User Interface for Organizing, Selecting andLaunching Media Items”. Alternatively, remote devices in accordance withthe present invention can be used in conjunction with other systems, forexample computer systems including, e.g., a display, a processor and amemory system or with various other systems and applications.

As mentioned in the Background section, remote devices which operate as3D pointers are of particular interest for the present specification.Such devices enable the translation of movement, e.g., gestures, intocommands to a user interface. An exemplary 3D pointing device 400 isdepicted in FIG. 3. Therein, user movement of the 3D pointing can bedefined, for example, in terms of a combination of x-axis attitude(roll), y-axis elevation (pitch) and/or z-axis heading (yaw) motion ofthe 3D pointing device 400. In addition, some exemplary embodiments ofthe present invention can also measure linear movement of the 3Dpointing device 400 along the x, y, and z axes to generate cursormovement or other user interface commands. In the exemplary embodimentof FIG. 3, the 3D pointing device 400 includes two buttons 402 and 404as well as a scroll wheel 406, although other exemplary embodiments willinclude other physical configurations. According to exemplaryembodiments of the present invention, it is anticipated that 3D pointingdevices 400 will be held by a user in front of a display 408 and thatmotion of the 3D pointing device 400 will be translated by the 3Dpointing device into output which is usable to interact with theinformation displayed on display 408, e.g., to move the cursor 410 onthe display 408. For example, rotation of the 3D pointing device 400about the y-axis can be sensed by the 3D pointing device 400 andtranslated into an output usable by the system to move cursor 410 alongthe y₂ axis of the display 408. Likewise, rotation of the 3D pointingdevice 408 about the z-axis can be sensed by the 3D pointing device 400and translated into an output usable by the system to move cursor 410along the x₂ axis of the display 408. It will be appreciated that theoutput of 3D pointing device 400 can be used to interact with thedisplay 408 in a number of ways other than (or in addition to) cursormovement, for example it can control cursor fading, volume or mediatransport (play, pause, fast-forward and rewind). Input commands mayinclude operations in addition to cursor movement, for example, a zoomin or zoom out on a particular region of a display. A cursor may or maynot be visible. Similarly, rotation of the 3D pointing device 400 sensedabout the x-axis of 3D pointing device 400 can be used in addition to,or as an alternative to, y-axis and/or z-axis rotation to provide inputto a user interface.

According to one purely illustrative exemplary embodiment of the presentinvention, two rotational sensors 420 and 422 and one accelerometer 424can be employed as sensors in 3D pointing device 400 as shown in FIG. 4.Although this exemplary embodiment employs inertial sensors it will beappreciated that the present invention is not so limited and examples ofother types of sensors which can be used in conjunction with otherexemplary embodiments are provided below. The rotational sensors 420 and422 can, for example, be implemented using ADXRS150 or ADXRS401 sensorsmade by Analog Devices. It will be appreciated by those skilled in theart that other types of rotational sensors can be employed as rotationalsensors 420 and 422 and that the ADXRS150 and ADXRS401 are purely usedas an illustrative example. Unlike traditional gyroscopes, theserotational sensors use MEMS technology to provide a resonating masswhich is attached to a frame so that it can resonate only along onedirection. The resonating mass is displaced when the body to which thesensor is affixed is rotated around the sensor's sensing axis. Thisdisplacement can be measured using the Coriolis acceleration effect todetermine an angular velocity associated with rotation along the sensingaxis. If the rotational sensors 420 and 422 have a single sensing axis(as for example the ADXRS150s), then they can be mounted in the 3Dpointing device 400 such that their sensing axes are aligned with therotations to be measured. For this exemplary embodiment of the presentinvention, this means that rotational sensor 422 is mounted such thatits sensing axis is parallel to the y-axis and that rotational sensor420 is mounted such that its sensing axis is parallel to the z-axis asshown in FIG. 4. It will be appreciated that different sensor packagesmay be available which could lead to other exemplary implementations.For example, the two 1-D rotational sensors 420 and 422 could bereplaced by a single, 2D rotational sensor package which providesoutputs of rotational motion along, e.g., the y and z axes. Oneexemplary 2-D rotational sensor is the Invensense IDG-300, although itwill be appreciated that other sensors/sensor packages may also be used.The rotational sensors 420, 422 can be 1-D, 2-D or 3-D sensors. Theaccelerometer 424 can, for example, be a 3-axis linear accelerometer,although a 2-axis linear accelerometer could be used by assuming thatthe device is measuring gravity and mathematically computing theremaining 3^(rd) value. Additionally, the accelerometer(s) androtational sensor(s) could be packaged together into a single sensorpackage. Other variations of sensors and sensor packages may also beused in conjunction with these exemplary embodiments.

The exemplary embodiments are not limited to the industrial designillustrated in FIGS. 3 and 4, but can instead be deployed in anyindustrial form factor, another example of which is illustrated as FIG.5. In the exemplary embodiment of FIG. 5, the 3D pointing device 500includes a ring-shaped housing 501, two buttons 502 and 504 as well as ascroll wheel 506 and grip 507, although other exemplary embodiments mayinclude other physical configurations. The region 508 which includes thetwo buttons 502 and 504 and scroll wheel 506 is referred to herein asthe “control area” 508, which is disposed on an outer portion of thering-shaped housing 501. More details regarding this exemplaryembodiment can be found in U.S. patent application Ser. No. 11/480,662,entitled “3D Pointing Devices”, filed on Jul. 3, 2006, the disclosure ofwhich is incorporated here by reference. Such devices have numerousapplications including, for example, usage in the so-called “10 foot”interface between a sofa and a television in the typical living room asshown in FIG. 6. Therein, as the 3D pointing device 500 moves betweendifferent positions, that movement is detected by one or more sensorswithin 3D pointing device 200 and transmitted to the television 620 (orassociated system component, e.g., a set-top box (not shown)). Movementof the 3D pointing device 500 can, for example, be translated intomovement of a cursor 640 displayed on the television 620 and which isused to interact with a user interface. Details of an exemplary userinterface with which the user can interact via 3D pointing device 500can be found, for example, in the above-incorporated U.S. patentapplication Ser. No. 10/768,432 as well as U.S. patent application Ser.No. 11/437,215, entitled “Global Navigation Objects in User Interfaces”,filed on May 19, 2006, the disclosure of which is incorporated here byreference.

One challenge faced in implementing exemplary 3D pointing devices 400 inaccordance with these exemplary embodiments is to employ components,e.g., rotational sensors 502 and 504, which are not too costly, while atthe same time providing a high degree of correlation between movement ofthe 3D pointing device 400, a user's expectation regarding how the userinterface will react to that particular movement of the 3D pointingdevice and actual user interface performance in response to thatmovement. For example, if the 3D pointing device 400 is not moving, theuser will likely expect that the cursor ought not to be drifting acrossthe screen. Likewise, if the user rotates the 3D pointing device 400purely around the y-axis, she or he would likely not expect to see theresulting cursor movement on display 408 contain any significant x-axiscomponent. To achieve these, and other, aspects of exemplary embodimentsof the present invention, various measurements and calculations areperformed, e.g., by the handheld device 400, which are used to adjustthe outputs of one or more of the sensors 420, 422 and 424 and/or aspart of the input used by a processor to determine an appropriate outputfor the user interface based on the outputs of the sensors 420, 422 and424. These measurements and calculations are used to compensate forfactors which fall broadly into two categories: (1) factors which areintrinsic to the 3D pointing device 400, e.g., errors associated withthe particular sensors 420, 422 and 424 used in the device 400 or theway in which the sensors are mounted in the device 400 and (2) factorswhich are not intrinsic to the 3D pointing device 400, but are insteadassociated with the manner in which a user is using the 3D pointingdevice 400, e.g., linear acceleration, tilt and tremor. Some exemplarytechniques for handling these effects are described in theabove-incorporated by reference '518 patent. However the followingexemplary embodiments provide additional techniques for handling thebias or offset error contributions to sensed motion which were describedin the Background section above.

Time-Varying Bias Tracking and Compensation

Referring now to FIG. 7, the sensors 700 and 702 within the 3D pointingdevice provide a relatively noisy and distorted output that represents,in this exemplary embodiment, both angular rate and linear accelerationfor the device. It will be appreciated that the present invention is notlimited to sensor combinations including two rotational sensors and anaccelerometer, but can include other types of, e.g., inertial, sensorsas described below. An overview of the time-varying bias tracking andcompensation scheme shown in FIG. 7 will first be provided, followed bya more detailed discussion of the functional blocks illustrated therein.The (optional) sensor interpretation block 704 uses pre-calculated biasvalues to improve the distorted sensor output while also converting thesensor output into standardized units. If sensor interpretation block704 is removed, or instead disposed further downstream in the processingchain, raw sensor outputs can alternatively be processed to estimate andremove bias.

The temperature sensor 706's information is processed by the temperaturefilter 707 to remove noise from the temperature signal. In thisexemplary embodiment, four different techniques are used to estimate thebias associated with the output of the rotational sensors 702 and theresulting bias estimates are combined or selected to form a compositevalue. More specifically, as seen in the exemplary embodiment of FIG. 7,the interpreted accelerometer and angular rate signals are processed bya stationary detection component 708, an accelerometer-assisted biasestimation (AABE) function 710, a slew-rate filter 712 and atemperature-assisted bias estimator (TABE) 714. The output from each ofthe four blocks 708-714 is provided to an estimate combiner 716 whichproduces a single estimate for the angular rate bias which estimate isupdated as the 3D pointing device operates. Although this exemplaryembodiment provides for a combination of four different bias estimates,it will be appreciated that other exemplary implementations couldcombine any subset of the four bias estimates to generate a compositebias estimate. A table illustrating the various permutations is providedbelow. However in this exemplary implementation, each of the fourdifferent techniques has certain strengths and weaknesses such thatusing all four in a blended approach provides a good estimate of thetime-varying bias of the sensors.

In the exemplary embodiment of FIG. 7, the sensors 700 and 702 provideuncalibrated output data that corresponds to movement of the 3D pointingdevice, i.e., linear acceleration and angular rate, and temperature ofthe 3D pointing device. The output values may be corrupted by noise,bias, cross-coupling and other errors. Accordingly, the (optional)sensor interpretation block 704 converts the uncalibrated data tostandardized SI units (e.g., m/sec² for the accelerometer data andrads/sec for the rotational sensor(s)) using pre-calculated values.Furthermore, the angular rate data output from the rotational sensor(s)702 is decoupled from the calibrated temperature data usingpre-calibrated values. A calibrated error residual will, however, remainsince the sensor output values are environmentally dependent. Moreinformation regarding exemplary implementations of techniques which canbe used in the sensor interpretation block 704 can be found in theabove-incorporated by reference '518 patent.

The measured or detected temperature values which are output from thetemperature sensor 706, and which reflect a temperature at which theaccelerometer 700 and/or rotational sensors 702 are currently operating,contain significant noise that would negatively affect downstreamprocessing. To improve performance of bias estimation according to theseexemplary embodiments, a temperature filter 707 is provided whichimproves the temperature estimate by removing noise with minimallatency. According to one purely illustrative exemplary embodiment, thenoise in the temperature estimates can be pre-calculated statisticallyand then filtered or reduced by the temperature filter 707 using singleexponential smoothing (SES) or double exponential smoothing (DES).

S(t_(n)) = a(t) ⋅ y(t_(n)) + (1 − α(t)) ⋅ S(t_(n))  SES  modelor $\{ {\begin{matrix}{{S( t_{n} )} = {{{a(t)} \cdot {y( t_{n} )}} + {( {1 - {\alpha (t)}} ) \cdot ( {{S( t_{n} )} + {b( t_{n} )}} )}}} \\{{b( t_{n} )} = {{\gamma \cdot ( {{S( t_{n} )} - {S( t_{n - 1} )}} )} + {( {1 - \gamma} ) \cdot {b( t_{n - 1} )}}}}\end{matrix}\mspace{14mu} {DES}\mspace{14mu} {model}} $

The smoothing timescale α(t) used in SES or DES can also be adaptivelycalculated based on the real-time (on-line) temperature change rate aslong as the temperature changes by a certain predetermined threshold.This predetermined threshold can be proportional to the bias change ratebounded by the worst temperature-induced bias change. The associatederror variance of the output can also be dynamically calculated inreal-time by the temperature filter 707 such that block 707 outputs botha filtered temperature value and its associated error variance to thecombiner 716.

Stationary detection block 708 determines when the 3D pointing device isnot moving. According to this exemplary embodiment, the stationarydetection block 708 analyzes the peak-to-peak values over a block ofdata from both the accelerometer 700 and angular rate sensor(s) 702.When the peak-to-peak value is less than a predetermined threshold, thedevice is determined to be stationary. The threshold allows the deviceto differentiate between the quasi-stationary state where a user isholding the 3D pointing device in his or her hand (but trying not tomove it) and the true stationary state when it is not being held by auser and is, e.g., resting on a desk or table. When the device is held,human tremor moves the 3D pointing device slightly and forces thedetected peak-to-peak value above the threshold. An optional low-passfilter 718 can be provided upstream of the stationary detection function708 to minimize the 50/60 Hz electric power-line interference whilepreserving the movement data associated with human tremor. Moreinformation relating to exemplary stationary detection techniques can befound in the incorporated by reference '518 patent. When the device isstationary, any non-zero outputs of the sensors are accurate estimatesof the bias associated with the sensors. However, this technique cannotbe used when the device is moving.

Accordingly, a second bias estimate is generated by anaccelerometer-assisted bias estimator (AABE) 710 according to thisexemplary embodiment. The AABE 710 uses Earth's gravity to determine theangular rate bias in up to two of the three angular directions. An(optional) finite impulse response (FIR) low-pass filter 720 is providedupstream of AABE 710 to eliminate sensor output data associated withhand tremor sensed by the sensors 700 and 702. The same filter 720 canbe used on both the accelerometer data and angular rate data to keep thesensor data synchronized. In order to better understand the techniqueemployed by the AABE 710 to estimate bias error, consider first that the3D pointing device's body coordinate system can be defined as shownabove in FIGS. 3 and 5. However a user of the device's coordinate systemxyz is defined in terms of the Earth's local tangent plane and north.That is, from the user's perspective the positive x-axis points north inthe tangent plane, the positive y-axis points east, and the positivez-axis is directed geocentrically (downward).

According to Euler's Theorem, any two independent, ortho-normalcoordinate frames can be related by a sequence of rotations (not morethan three) about coordinate axes, where no two successive rotations maybe about the same axis. A rotation sequence can, therefore, be used totransform movement data from the body frame of reference (in which thesensors inherently detect movement) to the user's frame of reference.This provides, among other things and purely as an example, thecapability to use the sensed movement data to more faithfully reproducethe user's intended movement of, e.g., a cursor which is controlledbased on movement of the 3D pointing device.

A conceptual illustration of an exemplary rotation sequence 800 forperforming this transformation is shown as FIG. 8( a). For thissequence, the first rotation is about the z-axis through an angle ψ, thesecond rotation is about the (new) y-axis through an angle θ, and thethird rotation is taken about the (newest) x-axis through an angle Φ.More information relating to transforming data from a body frame ofreference to a user's frame of reference may also be found in the '518patent. However, returning to the usage of this information to estimatebias by AABE 710, the increment of the elevation angle θ measured fromthe angular rate sensor 702 and accelerometer 700 should be identical iftheir outputs were error free. Thus an estimate of the bias errorintroduced into the measurement data output from the sensors can bedetermined by calculating a difference between a change of elevationangle θ determined using the data output from the rotational sensors 702and a change of elevation angle θ determined using data output from theaccelerometer 700.

Consider first that the existing biases in the measurements of therotational sensor(s) 702 can be represented as follows:

$\quad\{ \begin{matrix}{{{}_{}^{} \omega \hat{}_{}^{}} = {{{}_{}^{}{}_{}^{}} + {Bias}_{b_{\omega_{z}}} + ɛ_{b_{{\hat{\omega}}_{z}}}}} \\{{{}_{}^{} \omega \hat{}_{}^{}} = {{{}_{}^{}{}_{}^{}} + {Bias}_{b_{\omega_{y}}} + ɛ_{b_{{\hat{\omega}}_{y}}}}}\end{matrix} $

where ^(b){circumflex over (ω)}_(z) is the measurement of the zcomponent of the angular velocity vector in the body frame of referencegenerated by a rotational sensor 702, ^(b){circumflex over (ω)}_(y) isthe measurement of the y component of the angular velocity vector in thebody frame of reference generated by a rotational sensory 702, ^(b)ω_(z)and ^(b)ω_(y) are the truth of z and y components of the angularvelocity vector in the body frame of reference, respectively,

Bias_(b_(ω_(z)))

and

Bias_(b_(ω_(y)))

are biases in the measurements of the z and y components of the angularvelocity vector in the body frame of reference, respectively,

ɛ_(b_(ω̂_(z)))

and

ɛ_(b_(ω̂_(y)))

are the random noise of the rotational sensors with a mean value ofzero.

To determine its bias estimate, the AABE 710 calculates the change orincrement amounts of the elevation angle θ in a duration-varying timewindow from both filtered accelerometer data and filtered angular ratedata. Then the AABE 710 compares these values (e.g., by taking adifference between them) to establish its dynamic bias estimate. Therelationship between the angular velocity vector in the body frame ofreference, [^(b)ω_(x) ^(b)ω_(y) ^(b)ω_(z)]^(T), and the rate of changeof the Euler angles defined above, [{dot over (φ)} {dot over (θ)} {dotover (ψ)}]^(T), is determined by resolving the Euler rates into the bodycoordinate frame as shown below.

$\begin{matrix}{\begin{bmatrix}{{}_{}^{}{}_{}^{}} \\{{}_{}^{}{}_{}^{}} \\{{}_{}^{}{}_{}^{}}\end{bmatrix} = {\begin{bmatrix}\overset{.}{\varphi} \\0 \\0\end{bmatrix} + {\begin{bmatrix}1 & 0 & 0 \\0 & {\cos \; \varphi} & {\sin \; \varphi} \\0 & {{- \sin}\; \varphi} & {\cos \; \varphi}\end{bmatrix}\begin{bmatrix}0 \\\overset{.}{\theta} \\0\end{bmatrix}} +}} \\{{\begin{bmatrix}1 & 0 & 0 \\0 & {\cos \; \varphi} & {\sin \; \varphi} \\0 & {{- \sin}\; \varphi} & {\cos \; \varphi}\end{bmatrix}{\quad{\begin{bmatrix}{\cos \; \theta} & 0 & {{- \sin}\; \theta} \\0 & 1 & 0 \\{\sin \; \theta} & 0 & {\cos \; \theta}\end{bmatrix}\begin{bmatrix}0 \\0 \\\overset{.}{\psi}\end{bmatrix}}}}} \\{= {\begin{bmatrix}1 & 0 & {{- \sin}\; \theta} \\0 & {\cos \; \varphi} & {\sin \; {\varphi cos}\; \theta} \\0 & {{- \sin}\; \varphi} & {\cos \; {\varphi cos}\; \theta}\end{bmatrix}\begin{bmatrix}\overset{.}{\varphi} \\\overset{.}{\theta} \\\overset{.}{\psi}\end{bmatrix}}}\end{matrix}$

equivalently,

$\begin{bmatrix}\overset{.}{\varphi} \\\overset{.}{\theta} \\\overset{.}{\psi}\end{bmatrix} = {\begin{bmatrix}1 & {\sin \; {\varphi tan}\; \theta} & {\cos \; {\varphi tan}\; \theta} \\0 & {\cos \; \varphi} & {{- \sin}\; \varphi} \\0 & \frac{\sin \; \varphi}{\cos \; \theta} & \frac{\cos \; \varphi}{\cos \; \theta}\end{bmatrix}\begin{bmatrix}{{}_{}^{}{}_{}^{}} \\{{}_{}^{}{}_{}^{}} \\{{}_{}^{}{}_{}^{}}\end{bmatrix}}$

Thus, the change rate of the elevation angle can be expressed as: {dotover (θ)}=cos φ·^(b)ω_(y)−sin φ·^(b)ω_(z). Using this framework, thetotal increment of elevation angle θ measured from the angular ratesensor site for a fixed time block with certain block size, is given as:

${\Delta {\hat{\theta}}_{elevation}} = {{\Delta\theta}_{elevation} + {{period} \cdot {\sum\limits_{i = 1}^{BlockSize}\; ( {{{{- {Bias}_{b_{\omega_{z_{i}}}}} \cdot \sin}\; \varphi_{i}} + {{{Bias}_{b_{\omega_{y_{i}}}} \cdot \cos}\; \varphi_{i}}} )}} + {\ldots \mspace{14mu} {{period} \cdot {\sum\limits_{i = 1}^{BlockSize}( {{{{- ɛ_{b_{\omega_{z_{i}}}}} \cdot \sin}\; \varphi_{i}} + {{ɛ_{b_{\omega_{y_{i}}}} \cdot \cos}\; \varphi_{i}}} )}}}}$

where Δθ_(elevation) is the ideal of the increment of elevation angle inthe given time window, φ is defined in the above Euler angle rotationsequence, subscript i denotes the time point when the ith sample arrivesin the time block, BlockSize represents the total number of sample datapoints in the time block, and period is the sampling period. Thiscalculation is performed by AABE 710 to establish the first valueinvolved in the difference or comparison used to generate its biasestimate.

The total increment of elevation angle θ from the data generated by theaccelerometer 700 is calculated by evaluating the difference between thestart elevation angle at the first sample of the given time window andthe end elevation angle at the last sample of the given time window asexpressed, for example, below.

Δθ̂_(elevation)^(′) = θ̂_(elevation@lastsample) − θ̂_(elevation@firstsample) = Δθ_(elevation) + ɛ_(Δθ̂_(elevation)^(′))${\hat{\theta}}_{{elevation}@{currentSample}} = \{ \begin{matrix}{\sin^{- 1}( \frac{{acc}_{x_{@{currentSample}}}}{A_{g}} )} & \begin{matrix}{{0.1447 \cdot {A_{g}}}<={{acc}_{x}}<=} \\{0.9946 \cdot {A_{g}}}\end{matrix} \\{\tan^{- 1}( \frac{{acc}_{x_{@{currentSample}}}}{{A_{g}}^{2} - {acc}_{x}^{2}} )} & {{otherwise},}\end{matrix} $

where ε_(Δ{circumflex over (θ)}′) _(elevation) accounts for both theerror caused by non-ignorable, non-gravity terms in accelerometer dataand random noise with a mean of zero, acc_(x) is the x-axis measurementof accelerometer, and ∥A_(g)∥ is the amplitude of the localized earthgravity.

The difference in the calculations of the increments of the elevationangle is then calculated as:

${\begin{matrix}{{Bias}_{elevationAngle} = {{\Delta {\hat{\theta}}_{elevation}} - {\hat{\theta}}_{elevation}^{\prime}}} \\{= {\begin{pmatrix}{{{Bias}_{b_{\omega_{z}}} \cdot {\sum\limits_{i = 1}^{BlockSize}{{- \sin}\; \varphi_{i}}}} +} \\{{Bias}_{b_{\omega_{y}}} \cdot {\sum\limits_{i = 1}^{BlockSize}{\cos \; \varphi_{i}}}}\end{pmatrix} \cdot}} \\{{{period} + {{period} \cdot {\sum\limits_{i = 1}^{BlockSize}\begin{pmatrix}{{{{- ɛ_{b_{\omega_{z_{i}}}}} \cdot \sin}\; \varphi_{i}} +} \\{{ɛ_{b_{\omega_{y_{i}}}} \cdot \cos}\; \varphi_{i}}\end{pmatrix}}} -}} \\{ɛ_{\Delta {\hat{\theta}}_{elevation}^{\prime}}} \\{= {\begin{pmatrix}{{{Bias}_{b_{\omega_{z}}} \cdot {\sum\limits_{i = 1}^{BlockSize}{{- \sin}\; \varphi_{i}}}} +} \\{{Bias}_{b_{\omega_{y}}} \cdot {\sum\limits_{i = 1}^{BlockSize}{\cos \; \varphi_{i}}}}\end{pmatrix} \cdot}} \\{{{period} + ɛ_{{Bias}_{elevationAngle}}}}\end{matrix}\mspace{45mu} {where}}\mspace{655mu}$$ɛ_{{Bias}_{elevationAngle}} = {{{period} \cdot {\sum\limits_{i = 1}^{BlockSize}( {{{{- ɛ_{b_{\omega_{z_{i}}}}} \cdot \sin}\; \varphi_{i}} + {{ɛ_{b_{\omega_{y_{i}}}} \cdot \cos}\; \varphi_{i}}} )}} - ɛ_{\Delta {\hat{\theta}}_{elevation}^{\prime}}}$

This bias estimate generated by the AABE 710 can then be normalized bydividing it by the time-duration of the time window, and the resultingoutput of AABE 710, referred to herein as an “estimated bias of pitchangular rate” is:

${{Bias}_{PithAngularRate} = {{{ZRO}_{b_{\omega_{z}}} \cdot \frac{\sum\limits_{i = 1}^{BlockSize}{{- \sin}\; \varphi_{i}}}{Blocksize}} + {{ZRO}_{b_{\omega_{y}}} \cdot \frac{\sum\limits_{i = 1}^{BlockSize}{\cos \; \varphi_{i}}}{Blocksize}} + \frac{ɛ_{{Bias}_{elevationAngle}}}{{Blocksize} \cdot {period}}}},$

where

${\varphi = {\tan^{- 1}( \frac{- {acc}_{y}}{- {acc}_{z}} )}},$

acc_(y) and acc_(z) are the y-axis and z-axis measurements ofaccelerometer 700, respectively. The AABE 710 also adaptively calculatesthe variance of the associated measurement error

$\frac{ɛ_{{Bias}_{elevationAngle}}}{{Blocksize} \cdot {period}}$

based on the real-time sensors' data error propagation, and thisvariance along with the bias estimate are output from AABE 710 to thecombiner 716.

The durations of the time windows used by the AABE 710 can be determinedbased upon both (1) whether the measurement noise of the currentaccelerometer sample is below a predetermined threshold and (2) whetherthe averaged measurement noise of the current calculated pitch angularrate bias over the window is below the threshold. A minimum timeduration can be enforced as the lower bound on window duration to ensuremeasurement validity/quality. According to exemplary embodiments, a newAABE window is not initialized until a sufficiently “good” accelerometersample, in the sense of noise and distortion, arrives. The distortionand/or noise are calculated using error propagation based on thesensor's noise level and modeling of human's tremor effect. The AABEtime window can also be reset, for example, when one of the followingconditions occurs: a maximum pitch of the device is exceeded, the filter720 has not yet initialized, there is too much measurement noise, thereare too many missing samples, too much change in the roll angle (Φ) inthe body frame of reference has occurred over the window or the timewindow has grown too large.

According to exemplary embodiments, there are three different modes inwhich the AABE 710 can provide bias estimates to the combiner 716. Thefirst is to provide the bias estimates described above as individualdata points which will converge over time. This first mode is referredto herein as “1D Pitch mode”. However, under certain circumstances, AABE710 can provide estimates in one of two other modes which may providevery quick and accurate bias estimates, e.g., at power-on of the device,by using a line intersection technique to attempt to more rapidlyconverge on the “best” bias estimate. These two additional modes arereferred to herein as “2D line intersection mode” and “2D pseudo-lineintersection mode”.

The 2D line intersection mode operates using two 1D Pitch mode AABE biasestimates together, i.e., a first estimate at time t and a secondestimate at time t+1, to obtain a better estimate. For example, assumethat a user rolls the device (i.e., rotates it about the x-axis) betweentime t and time t+1. Then, the first 1D Pitch mode bias estimateprovides an estimate of the bias in one direction and the second 1DPitch mode bias estimate provides an estimate of the bias in anotherdirection. The intersection of these two lines provides an accurate andquick estimate of the set of

Bias_(b_(ω_(y)))

and

Bias_(b_(ω_(z)))

simultaneously. Thus when operating in 2D line intersection mode theAABE 710 sends two adjacent measurements of biases of pitch angularrates at two different roll angles, and their associated measurementerror covariances, together to the estimate combiner 716.

The 2D pseudo-line intersection mode can, according to this exemplaryembodiment, be considered as a special case of the 2D line intersectionmode. In certain circumstances, e.g., when the 3D pointing device is notmoving or is moving very slowly, AABE 710 can map the averaged values ofangular rate sensor's data over the current time window into the bias ofthe yaw angular rate defined in user frame. This mapping can beperformed, for example, as follows:

$\begin{matrix}{{Bias}_{YawAngularRate} = \frac{{{Bias}_{b_{\omega_{y}}} \cdot {\sum\limits_{i = 1}^{BlockSize}{\sin \; \varphi_{i}}}} + {{Bias}_{b_{\omega_{z}}} \cdot {\sum\limits_{i = 1}^{BlockSize}{\cos \; \varphi_{i}}}}}{BlockSize}} \\{\cong \frac{{\sum\limits_{i = 1}^{BlockSize}{\sin \; {\varphi_{i} \cdot {{}_{}^{} \omega \hat{}_{yi}^{}}}}} + {\cos \; {\varphi_{i} \cdot {{}_{}^{} \omega \hat{}_{zi}^{}}}}}{BlockSize}}\end{matrix}$

The mathematical equation of this measured bias of yaw angular ratealong with the mathematical equation of the estimated bias of pitchangular rate together form two lines perpendicular with each other ingeometry space. The intersection of those two lines also provides aquick estimate of the set of

Bias_(b_(ω_(y)))

and

Bias_(b_(ω_(z)))

simultaneously. With their real-time calculated measurement errorcovariance, this measured bias of yaw angular rate and the estimatedbias of pitch angular rate are sent to estimate combiner 716 as theinput from AABE 710. The measurement error variance of the bias of yawangular rate used in the 2D pseudo-line intersection mode can beweighted less over time.

The decision regarding in which of these three modes the AABE 710 shouldoperate at any given time can, according to one exemplary embodiment, bemade as follows. This flow is also described below with respect to FIG.9. If three exemplary criteria are met, then AABE 710 can operate in 2Dpseudo-line intersection mode. These three exemplary criteria are (1) ifthe measurement error variance corresponding to the current estimatedbias of the pitch angular rate is smaller than a predeterminedthreshold, (2) if the time window size (BlockSize) is short enough and(3) if the difference of the measured body-frame roll angles (0) in thecurrent time window and in the previous time window is small enough. Ifthese three criteria are not all met, then the AABE 710 can operate inthe 2D line intersection mode if condition (3) is not met and if anothercondition (4) is met. Condition (4) requires that the time gap betweenthe last time window and current time window is shorter than apredetermined amount of time.

If neither of these sets of conditions is met, then AABE 710 operates in1D Pitch mode. Additionally, if either of the conditions (5) and (6) ismet, then AABE 710 will also operate in 1D Pitch mode. Conditions (5)and (6), according to this exemplary embodiment, are (5) if thedifference between a newest estimate of bias using the 2D pseudo-lineintersection mode and the previous best estimate of estimate combiner716 is greater than k*sqrt(P), where k is a pre-defined constant factor,P is the final bias estimate error covariance and (6) if the slopeestimate in the TABE 714 is available and used in estimate combiner whenthe AABE is not operating in 2D line-intersection mode. All of the aboveconditions or criteria used to determine in which mode the AABE 710shall operate can be compared with pre-calculated thresholds, some ofwhich may be constant and some of which may decay over time using, e.g.,a single exponential decay model or a double exponential decay modelwhen the nature of the change rate of the bias is slowing down overtime. It should be further appreciated that these algorithms can be runon each axis independently and, potentially, on each axissimultaneously, e.g., assuming that any axis is the pitch axis insteadof just the x-axis as is described in some of these exemplaryembodiments.

The AABE 710 provides accurate and fast bias estimates for the pitchdirection, but does not directly measure the yaw bias as mentionedabove. It should be further appreciated that AABE 710 can be extended toalso measure the roll bias, and that AABE algorithm 710 can be run oneach axis (roll or pitch) independently and on both axes (roll andpitch) simultaneously. Accordingly, the slew-rate filter 714 provides athird technique for estimating bias according to this exemplaryembodiment. This technique, which can be independent of the other biasestimation techniques described herein, operates on the assumption thatthe rate of change of the amount of bias introduced by the rotationalsensor 702 will vary within a predetermined range, which range is afunction of the temperature of the device. That is, the rate of changein the bias error is bounded by the rate of change in temperature of thedevice. The angular rate sensor data is first, optionally, processed bya low pass filter 722 before flowing into the slew-rate filter 712. Theoperation of the slew-rate filter 712 can be defined by the followingequation:

y={B:x>B,x:−B<x<B,−B:x<−B;}

, where x is the input, y is the output, and B is the slew-rate filterthreshold. For this exemplary embodiment, x is therefore the angularrate output from the low pass filter 722 minus the current angular ratebias estimate fed back from the estimate combiner 716. The output y plusthe current angular rate bias estimate is the next estimate for theangular rate bias to be output from the slew-rate filter 712 to thecombiner 716.

The threshold value, B, used by the slew-rate filter 172 is periodicallyadaptively calculated based on the real-time temperature change rate andthe bias temperature slope estimate. The upper bound and the lower boundare enforced on such threshold. In this exemplary embodiment, B iscalculated as follows:

${B( t_{n} )} = \{ \begin{matrix}{{k \cdot {{slope}( t_{n} )} \cdot \Delta}\; {T/\Delta}\; t} & {otherwise} \\B_{\max} & {{{k \cdot {slope}}\mspace{14mu} {( t_{n} ) \cdot \Delta}\; {T/\Delta}\; t} > B_{\max}} \\B_{\min} & {{{{k \cdot {slope}}\mspace{14mu} {( t_{n} ) \cdot \Delta}\; {T/\Delta}\; t} < B_{\min}},}\end{matrix} $

where k is a constant, B_(max) is the upper bound of B, B_(min) is thelower bound of B, slope(t_(n)) is the estimated slope at time step ndenoted by t_(n), and ΔT/Δt is the temperature change rate.

The fourth technique used to estimate bias according to this exemplaryembodiment is performed by the temperature assisted bias estimationfunction (TABE) 714. This technique correlates the change in temperatureof the device to the change of the bias introduced by the rotationalsensor(s) 702. According to this exemplary embodiment, the TABE 714 usesthe model:

Bias=slope(t)*T+intercept(t),

, where T (in units of degrees Centigrade) is the raw temperaturemeasurement after decoupling both z and y channels of the angular ratedata using the best current estimate of bias available but beforetemperature smoothing, slope(t) is the change of bias per unittemperature as a function of time, intercept(t) is the bias at atemperature of zero as a function of time and t is the time.

According to this exemplary embodiment, a recursive least-squared (RLS)method and algorithm is used to adaptively learn and track the slope(t)and intercept(t), an example of which RLS algorithm is illustrated inFIG. 8( b). The adaptive filtering part of this exemplary RLS algorithmis shown as adaptive filter block 806. The reference input to theadaptive filtering are measurements from the temperature sensor 801(also shown as temperature sensor 706 in FIG. 7), complemented with aunit constant of 1, the vector of [T, 1], shown as the input to block807 in FIG. 8( b). This vector represents a sensed temperature afterinterpretation (e.g., in units of degrees Celsius) as well as otherfactors, e.g., pressure and humidity, related to temperature which mayimpact the bias and which are represented in this example by the unitconstant of 1. The measured temperature T_(M) of sensor 801 is firstinterpreted in block 803 (also shown as part of sensor interpret block704 in FIG. 7) and yields the estimate of the true temperature T. Thistrue temperature is at least one cause of angular rate sensor 702'sbias, which is linearly transformed (matrix multiplied) and coupled intobias (ZRO) of angular rate sensor(s) 702 using the above equation atblock 804. The other possible root causes of angular rate sensor's bias,such as pressure and humidity etc., are coupled into the ZRO in theforms of slope(t) and intercept(t). The ZRO value is input to summer 805and added to the desired signal ω (source signal 802) which is theangular rate data in units of rad/s, the summed value representingangular-rate measurement from angular rate sensor(s) 702 and alsoserving as the primary input to the RLS adaptive filtering block 806.The RLS algorithm block 806 can, for example, operate as describedbelow.

The adaptive filter 807 adaptively adjusts the coefficient vector:

{right arrow over (W)}(t _(n))=[w ₁(t _(n))w ₂(t _(n))]=[slope(t_(n))intercept(t _(n))]

and yields the output

${y = {{{\overset{arrow}{W}( t_{n} )} \otimes \begin{bmatrix}{T( t_{n} )} \\1\end{bmatrix}} = {\begin{bmatrix}{{slope}\mspace{14mu} ( t_{n} )} & {{intercept}\mspace{14mu} ( t_{n} )}\end{bmatrix} \otimes \begin{bmatrix}{T( t_{n} )} \\1\end{bmatrix}}}},$

where t_(n) denotes time step n, and

denotes matrix multiplication. In this exemplary implementation, onlyone of the coefficients of the adaptive filter, slope(t_(n)), isdirected to the downstream combiner. However, the output y itself can beused for the bias estimate alone. The coefficients {right arrow over(W)}(t_(n)) are updated at each time step using the RLS algorithm whichcan, for example, be performed as follows. First, the RLS algorithm isinitialized by setting:

${{\overset{arrow}{W}( t_{n} )} = \begin{bmatrix}0 & 0\end{bmatrix}},{{P(0)} = \begin{bmatrix}\delta^{- 1} & 0 \\0 & \delta^{- 1}\end{bmatrix}}$ and $\delta = \{ \begin{matrix}{{small}\mspace{14mu} {positive}\mspace{14mu} {constant}\mspace{14mu} {for}\mspace{14mu} {high}\mspace{14mu} {SNR}} \\{{large}\mspace{14mu} {positive}\mspace{14mu} {constant}\mspace{14mu} {for}\mspace{14mu} {high}\mspace{14mu} {SNR}}\end{matrix} $

where {right arrow over (W)} is the vector of filter coefficients and Pis the inverse of the instant correlation matrix. Then, for each instantof time step t_(n), compute:

${{\overset{arrow}{\pi}( t_{n} )} = {{P( t_{n - 1} )} \otimes {\overset{arrow}{u}( t_{n} )}}},{{\overset{arrow}{k}( t_{n} )} = \frac{\overset{arrow}{\pi}( t_{n} )}{\lambda + {{{\overset{arrow}{u}}^{T}( t_{n} )} \otimes {\overset{arrow}{\pi}( t_{n} )}}}},{{\xi ( t_{n} )} = {{d( t_{n} )} - {{{\overset{arrow}{W}}^{T}( t_{n} )} \otimes {\overset{arrow}{u}( t_{n} )}}}},{{\overset{arrow}{W}( t_{n} )} = {{\overset{arrow}{W}( t_{n - 1} )} + {{\overset{arrow}{k}( t_{n} )}{\xi ( t_{n} )}}}},{{P( t_{n} )} = {{\lambda^{- 1}{P( t_{n - 1} )}} - {\lambda^{- 1}{{\overset{arrow}{k}( t_{n} )} \otimes {{\overset{arrow}{u}}^{T}( t_{n} )} \otimes {P( t_{n - 1} )}}}}},{where}$${\overset{arrow}{u}( t_{n} )} = \begin{bmatrix}{T( t_{n} )} \\1\end{bmatrix}$ d(t_(n)) = ω(t_(n)) + ZRO(t_(n))

λ is a positive constant close to, but less than, unity, and

denotes matrix multiplication.

This exemplary implementation operates on the principle that minimizingthe energy of the system output is equivalent to minimizing thedifference between the ZRO and the output y of RLS adaptive filter 807,which can be shown as follows:

z = ω + Bias − y z² = ω² + (Bias − y)² + 2ω(Bias − y) $\begin{matrix}{{E\lbrack z^{2} \rbrack} = {{E\lbrack \omega^{2} \rbrack} + {E\lbrack ( {{Bias} - y} )^{2} \rbrack} + {2{E\lbrack {\omega \cdot ( {{Bias} - y} )} \rbrack}}}} \\{= {{E\lbrack \omega^{2} \rbrack} + {E\lbrack ( {{Bias} - y} )^{2} \rbrack}}}\end{matrix}$ min  E[z²] = E[ω²] + min  E[(Bias − y)²],

where z is the system output, and y is the output of adaptive filter807.

In this exemplary implementation, the angular rate output from thesensor(s) 702 may couple into the temperature signals from thetemperature sensor 706 which can cause difficulties for the RLSalgorithm. This coupling mechanism can be minimized by providing afading effect over the first several samples of the RLS algorithm. Thefading effect can be calculated based on the magnitude of the rotationmotion using the best knowledge about angular rate bias up to that pointin time. The adaptive learned slope(t) is further evaluated by comparingits dynamic range (peak-to-peak value) in a time window of predefinedlength with a certain threshold, if the adaptive learned slope is stableenough, this estimated slope and its associated estimated error variancewill be sent to the estimate combiner and the slew-rate filter. Theassociated estimated error variance can be calculated using the standarddeviation over the time window or using the peak-to-peak value over thetime window itself. A lower bound on the error can be provided due tothe nature of the hysteresis of the bias shift. It should be furtherappreciated that both slew-rate filter 712 and TABE algorithm 714 can berun on each axis independently and/or on both axes simultaneously.

The outputs of the four bias estimation functions 708-714, as well asthe filtered temperature data, are provided to the estimate combiner 716which uses that information to generate a current bias estimate. Thecombiner 716 can be implemented, for example, using a Kalman filterinfrastructure which synthesizes all of the measurements available fromthe stationary detector, slew-rate filter, the accelerometer-assistedestimator and the temperature-assisted estimator. The process model usedin this exemplary embodiment is random walk with the worst dynamicsassumption if the slope estimation is not available from TABE 714. Theprocess model is changed to a linear temperature-based model if theslope estimation is available from TABE 714. The state of the Kalmanfilter used as an estimate combiner 716 according to this exemplaryembodiment can be expressed as:

$\overset{harpoonup}{X} = {\lfloor \begin{matrix}{Bias}_{b_{\omega_{y}}} & {Bias}_{b_{\omega_{z}}}\end{matrix} \rfloor.}$

The process model of the Kalman filter used as estimate combiner 716according to this exemplary embodiment can be expressed as:

${\overset{harpoonup}{X}}_{t_{n + 1}\text{|}t_{n}} = {{\overset{harpoonup}{X}}_{t_{n}} + {{( \frac{{{slope}\mspace{14mu} ( t_{n} )} + {{slope}\mspace{14mu} ( t_{n + 1} )}}{2} ) \cdot \Delta}\; T} + {\overset{harpoonup}{W}}_{t_{n}}}$Δ T = FiltT(t_(n + 1)) − FiltT(t_(n))

where {right arrow over (X)}_(t) _(n+1) _(/t) _(n) is the predicted biasestimate vector at time t_(n+1) given the measurements up to time t_(n),{right arrow over (X)}_(t) _(n) is the final bias estimate vector attime t_(n), slope(t_(n)) and slope(t_(n+1)) are the slopes learned fromTABE 714 at time t_(n) and t_(n+1), respectively, if such data isavailable (in the exemplary embodiments described above there are twochannels, y and z, so the slopes can be described using a 2×1 columnvector), FiltT(t_(n)) and FiltT(t_(n+1)) are the filtered temperatureestimate at time t_(n) and t_(n+1), respectively, ΔT is the temperaturechange between a current filtered temperature estimate FiltT(t_(n+1))and a last filtered temperature estimate FiltT(t_(n)) associated withthe last time at which the Kalman filter was executed, and {right arrowover (W)}_(t) _(n) is the error with zero mean and covariance 2×2 matrixQ. If the slope estimation is not available from TABE 714, then theslope values can be set to zero.

The process error covariance is calculated as:

Q=R _(slope)·(ΔT ² +R _(ΔT))+R _(ΔT) ·k·slope

slope^(T)

ΔT=FiltT(t _(n+1))−FiltT(t _(n))

, where:

represents the matrix product,R_(slope) is a 2×2 slope estimate error covariance matrix accounting forboth y-axis and z-axis components which are also provided by TABE 714 ifsuch data is available,ΔT is the temperature change between a current filtered temperatureestimate FiltT(t_(n+1)) and a last filtered temperature estimateFiltT(t_(n)), i.e., corresponding to the last time that the Kalmanfilter was executed, R_(ΔT) is the estimate error variance of theestimate of ΔT, andk is a 2×2 correlation coefficients matrix.

When the slope estimation is not available from the TABE 714, the slopevalue used in this calculation is set to [0;0] and the R_(slope) valueis set to be the worst dynamic range bounded by the value across all ofthe sensor set.

The predicted estimate error covariance associated with the Kalmanfilter according to this exemplary embodiment can be expressed as:

P _(t) _(n+1) _(/t) _(n) =P _(t) _(n) +Q

, where:P_(t) _(n+1) _(/t) _(n) is the predicted bias estimate error covarianceat time t_(n+1) given the measurements up to time t_(n), andP_(t) _(n) is the final bias estimate error covariance at time t_(n).

The measurement model associated with the Kalman filter can be expressedas:

{{right arrow over (M)}(t _(n+1))=H(t _(n+1))

{right arrow over (X)}(t _(n+1))+{right arrow over (U)} _(t) _(n+1)

, where{right arrow over (M)}(t_(n+1)) is the measurement set in terms ofcolumn vector at time step t_(n+1),{right arrow over (U)}_(t) _(n+1) is the measurement error at timet_(n+1) with mean of zero and covariance of R,H(t_(n+1)) is the transfer matrix at time t_(n+1).

${\overset{harpoonup}{M}}_{t_{n + 1}} = \{ {{\begin{matrix}\begin{bmatrix}{{Bias}_{b_{\omega_{y}}}( t_{n + 1} )} \\{{Bias}_{b_{\omega_{z}}}( t_{n + 1} )}\end{bmatrix} & {{the}\mspace{14mu} {output}\mspace{14mu} {from}\mspace{14mu} {stationary}\mspace{14mu} {detector}\mspace{14mu} 708\mspace{14mu} {or}\mspace{14mu} {slew}\text{-}{rate}\mspace{14mu} {filter}\mspace{14mu} 712} \\\begin{bmatrix}{{Bias}_{pitchAngularRate}( t_{n + 1} )} \\{{Bias}_{yawAngularRate}( t_{n + 1} )}\end{bmatrix} & {{the}\mspace{14mu} {output}\mspace{14mu} {from}\mspace{14mu} {the}\mspace{14mu} {AABE}\; 710\mspace{14mu} {using}\mspace{14mu} 2D\mspace{14mu} {pseudo}\text{-}{line}\mspace{14mu} {intersection}\mspace{14mu} {mode}} \\\begin{bmatrix}{{Bias}_{pitchAngularRate}( t_{n + 1} )} \\{{Bias}_{yawAngularRate}( t_{n} )}\end{bmatrix} & {{the}\mspace{14mu} {output}\mspace{14mu} {from}\mspace{14mu} {the}\mspace{14mu} {AABE}\; 710\mspace{14mu} {using}\mspace{14mu} 2D\mspace{14mu} {line}\mspace{14mu} {intersection}\mspace{14mu} {mode}} \\{{Bias}_{pitchAngularRate}( t_{n + 1} )} & {{the}\mspace{14mu} {output}\mspace{14mu} {from}\mspace{14mu} {the}\mspace{14mu} {AABE}\; 710\mspace{14mu} {using}\mspace{14mu} {ID}\mspace{14mu} {pitch}\mspace{14mu} {mode}}\end{matrix}H_{t_{n + 1}}} = \{ \begin{matrix}\begin{bmatrix}1 & 0 \\0 & 1\end{bmatrix} & {{associated}\mspace{14mu} {with}\mspace{14mu} {stationary}\mspace{14mu} {detector}\mspace{14mu} 708\mspace{14mu} {or}\mspace{14mu} {slew}\text{-}{rate}\mspace{14mu} {filter}\mspace{14mu} 712} \\\begin{bmatrix}{\cos \; {\varphi ( t_{n + 1} )}} & {{- \sin}\; {\varphi ( t_{n + 1} )}} \\{\sin \; {\varphi ( t_{n + 1} )}} & {\cos \; {\varphi ( t_{n + 1} )}}\end{bmatrix} & {{associated}\mspace{14mu} {with}\mspace{14mu} 2D\mspace{14mu} {pseudo}\text{-}{line}\mspace{14mu} {intersection}\mspace{14mu} {mode}\mspace{14mu} {of}\mspace{14mu} {AABE}\; 710} \\\begin{bmatrix}{\cos \; {\varphi ( t_{n + 1} )}} & {{- \sin}\; {\varphi ( t_{n + 1} )}} \\{\cos \; {\varphi ( t_{n} )}} & {{- \sin}\; {\varphi ( t_{n} )}}\end{bmatrix} & {{{associated}\mspace{14mu} {with}\mspace{14mu} 2D\mspace{14mu} {line}\mspace{14mu} {intersection}\mspace{14mu} {mode}\mspace{14mu} {of}\mspace{14mu} {AABE}\; 710}\mspace{14mu}} \\\begin{bmatrix}{\cos \; {\varphi ( t_{n + 1} )}} & {{- \sin}\; {\varphi ( t_{n + 1} )}}\end{bmatrix} & {{{associated}\mspace{14mu} {with}\mspace{14mu} 1D\mspace{14mu} {pitch}\mspace{14mu} {mode}\mspace{14mu} {of}\mspace{14mu} {AABE}\; 710}\;}\end{matrix} } $

where ρ denotes correlation coefficient.

Thus, the updated final bias estimate output by the estimate combiner(Kalman filter) 716, and its error covariance, according to thisexemplary embodiment are given as:

Z _(t) _(n+1) =H _(t) _(n+) X _(t) _(n+1) _(/t) _(n)

r _(t) _(n+1) =M _(t) _(n+1) −Z _(t) _(n+1)

S _(t) _(n+1) =H _(t) _(n+1) P _(t) _(n+1) _(/t) _(n) H _(t) _(n+1) ^(T)+R _(t) _(n+1)

K _(t) _(n+1) =P _(t) _(n+1) _(/t) _(n) H _(t) _(n+1) ^(T) S _(t) _(n+1)⁻¹

X _(t) _(n+1) _(/t) _(n+1) =X _(t) _(n+1) _(/t) _(n) +K _(t) _(n+1) r_(t) _(n+1)

P _(t) _(n+1) _(/t) _(n+1) =P _(t) _(n+1) _(/t) _(n) −P _(t) _(n+1)_(/t) _(n) H _(t) _(n+1) ^(T) S _(t) _(n+1) ⁻¹ H _(t) _(n+1) P _(t)_(n+1) _(/t) _(n)

, where X_(t) _(n+1) _(/t) _(n+1) is the final bias estimate at timet_(n+1) given the measurement up to time t_(n+1), X_(t) _(n+1) _(/t)_(n) is the predicted bias estimate at time t_(n+1) given themeasurement up to time t_(n), and P_(t) _(n+1) _(/t) _(n) is the finalbias estimate error covariance at time t_(n+1) given the measurement upto time t_(n+1).

The individual bias estimate models described above which provide inputto the Kalman filter can be serviced in priority order when available.For example, when only one measurement set is available, then the methodreduces to a single constraint at a time. If, on the other hand, morethan one measurement set is available at a particular time step,according to one exemplary embodiment, only one of the measurement setswill be executed by the Kalman filter based on, for example, thefollowing priority order: stationary detector 708, AABE 710, andslew-rate filter 712. This aspect and other features of bias estimationaccording to these exemplary embodiments can also be seen in the processflow chart of FIG. 9.

Therein, state initialization of the Kalman filter occurs at block 900.The rest of the flow illustrates the process of entering an update orprediction phase for the Kalman filter for a particular time step. Sincethe TABE 714 is, according to this exemplary embodiment, the highestranked of the bias estimators (i.e., the process model is changed to alinear temperature-based model if the slope estimation is available fromTABE 714), it is first determined at block 902 whether slope estimatedata is currently available from TABE 714. If so, then the lineartemperature-based model is used, and the slope and its associated errorcovariance are updated at block 904. If not, the flow moves to block906, wherein it is determined whether a stationary detection indicationis available. If so, then the Kalman filter update process describedabove is called at block 908. The Kalman filter then updates its statebased on the indication that the 3D pointing device is stationary andthe output of the rotational sensor(s) 702 are indicative of the currentbias which they are introducing. The flow then proceeds to generate anoutput bias estimate at block 910.

Otherwise, if the determination at block 906 is “No”, i.e., the deviceis not stationary, then the flow proceeds to block 912. Therein, it isdetermined whether data is available to generate an output from AABE 710as described above. If the answer is “Yes”, then the flow proceeds toblock 914 wherein the process begins to determine which of the threeafore-described modes of operation should be used by the AABE 710 topresent bias estimation data to the Kalman filter. For example, ifconditions (1)-(3) described above are met then, according to thisexemplary embodiment, the possibility exists to use the 2D pseudo-lineintersection mode to provide bias estimation data to the Kalman filterand the flow proceeds to block 916. Block 916 determines whether any ofthe negative conditions (5) and (6) described above are present, i.e.,whether (5) the difference between a newest estimate of bias using the2D pseudo-line intersection mode and the previous best estimate of block908 is greater than k*sqrt(P), where k is a pre-defined constant factorand P is the final bias estimate error covariance or (6) the slopeestimate in the TABE 714 is available and used in the Kalman filter. Ifeither of these negative conditions is present, then the flow followsthe “Yes” path and moves to block 918 and the AABE 710 provides biasestimation data using the 1D Pitch mode described above to be used inupdating the state of the Kalman filter at block 908. Otherwise the flowfollows the “No” path out of block 916 to block 920 where the biasestimation data is then calculated using the 2D pseudo-line intersectionmode and presented to the Kalman filter update block 908.

Returning to block 914, if any of conditions (1)-(3) are not met, thenthe flow follows the “No” path to block 922. At this block it isdetermined whether condition (3) described above is not met and whethercondition (4) is met, thereby permitting the AABE to provide biasestimation data to the Kalman filter update block 908 using the 2D lineintersection mode. This is shown by block 924. If these criteria are notmet, then the flow follows the “No” path to block 918 and the processingusing 1D Pitch mode continues as described above.

Returning to block 912, if a measurement is not available from the AABE710, then the flow follows the “No” path to block 926. Therein, it isdetermined whether a measurement is available from the slew-rate filter712. If so, then bias estimation data from the slew-rate filter 712 ispresented to the Kalman filter update call 908 to update the state ofthe Kalman filter based on that data via the “Yes” path. Otherwise, ifnone of the four bias estimation techniques described above havemeasurements available during a particular timestep (iteration), thenthe flow proceeds to block 928 wherein a prediction phase is performedfor the Kalman filter (rather than an update). The prediction phase usesthe state estimate from the previous timestep to produce an estimate ofthe state at the current timestep (i.e., but without measurement data asin the update call 908). This estimated state is then used to drive thebias estimate output at block 910, i.e., either after the predictionphase or the update phase of the Kalman filter. The updated state andassociated error covariance are then used in the next timestep asindicated by block 930. According to exemplary embodiments, the outputfrom block 910 can be used in several ways. For example, as shown inFIG. 7, the output can be fed back with, e.g., one sample delay atblocks 724 and 726, to the TABE 714 and sensor interpretation block704/slew rate filter 712, respectively, to improve their estimatesduring the next timestep.

Moreover, the estimated bias of the rotational sensor(s) 702, as well asits associated temperature and the estimated slopes (if they areavailable from the TABE 714) can be stored in flash memory 1001(described below with respect to FIG. 10) on the embedded hardware asdynamic calibration data for preparation of a next-time system powercycle use. For example, the next time the 3D pointer system is poweredon, and if such information is available from flash memory 1001, thisinformation will be fed back to the estimate combiner 716 as the initialestimate of the bias, to the temperature filter 707 for betterangular-rate decoupling, and to the slew-rate filter 712 as the initialcurrent bias estimate. This information can also help to reduce thedynamic range the system needs to handle by better refining Q in theKalman filter.

Having provided a description of bias estimation in exemplary 3Dpointing devices according to the afore-described exemplary embodiments,FIG. 10 illustrates an exemplary hardware architecture associated withsuch 3D pointing devices. Therein, a processor 1000 communicates withother elements of the 3D pointing device including a flash memory 1001,scroll wheel 1002, JTAG 1004, LEDs 1006, switch matrix 1008, IRphotodetector 1010, rotational sensor(s) 1012, accelerometer 1014 andtransceiver 1016. The flash memory device 1001 can be used by processor1000 to store various programs and/or data for use in operating the 3Dpointing device, e.g., bias estimates as described above. The scrollwheel 1002 is an optional input component which enables a user toprovide input to the interface by rotating the scroll wheel 1002clockwise or counterclockwise. JTAG 1004 provides the programming anddebugging interface to the processor. LEDs 1006 provide visual feedbackto a user, for example, when a button is pressed. Switch matrix 1008receives inputs, e.g., indications that a button on the 3D pointingdevice has been depressed or released, that are then passed on toprocessor 1000. The optional IR photodetector 1010 can be provided toenable the exemplary free space pointing device to learn IR codes fromother remote controls. Rotational sensors 1012 provide readings toprocessor 1000 regarding, e.g., the y-axis and z-axis rotation (angularrate) of the 3D pointing device as described above. Accelerometer 1014provides readings to processor 100 regarding the linear acceleration ofthe 3D pointing device which can be used, e.g., to perform tiltcompensation and to compensate for errors which linear accelerationintroduces into the rotational readings generated by rotationalsensor(s) 1012. Transceiver 1016 is used to communicate information toand from 3D pointing device, e.g., to the system controller 228 or to aprocessor associated with a computer. The transceiver 1016 can be awireless transceiver, e.g., operating in accordance with the Bluetoothstandards for short-range wireless communication or an infraredtransceiver. Alternatively, 3D pointing device according to theseexemplary embodiments can communicate with systems via a wirelineconnection.

The individual bias estimators described above can be used and appliedindependently of one another or in different combinations. As mentionedabove, although the afore-described exemplary embodiments combine allfour of the outputs to yield an improved estimate for a particular (yetexemplary) implementation, those skilled in the art will recognize thateach produces an independent estimate and can be used with (or without)the others. More specifically, and for completeness, exemplaryembodiments contemplate each combination of rate estimators listed inthe table below. This list is not, however, intended to be exhaustive.

Combination Type(s) of Bias Estimators 1 AABE Only 2 Slew-Rate FilterOnly 3 TABE Only 4 AABE and Stationary Detection 5 AABE and Slew-RateFilter 6 AABE and TABE 7 AABE, Stationary Detection and Slew-Rate Filter8 AABE, Stationary Detection and TABE 9 AABE, Slew-Rate Filter and TABE10 Stationary Detection, Slew-Rate Filter and TABE 11 StationaryDetection and Slew-Rate 12 Stationary Detection and TABE 13 TABE andSlew-Rate Filter 14 AABE, Stationary Detection, TABE and Slew-RateFilter

Additionally, although the foregoing exemplary embodiments describe aspecific, yet purely exemplary, Kalman filter operating as an estimatecombiner, it will be appreciated that other mechanisms can be used tocombine or select the bias estimates output from the plurality of biasestimators in any given exemplary embodiment (if more than one biasestimator is employed). Moreover, the exemplary processing describedherein may be performed, in whole or in part, either within the 3Dpointing device itself or outside of the 3D pointing device. Forexample, raw sensor data can be transmitted to a system processor, e.g.,within a set-top box or a computer, wherein it can then be processed tooutput a bias estimate and use that bias estimate as part of the largerprocessing scheme to determine motion of the 3D pointing device and usesuch information, e.g., to update cursor position associated with acursor displayed on a user interface screen. The bias estimate describedherein can, for example, be subtracted from an initial measurement ofangular rate by the rotational sensor(s) 702, e.g., after a staticcalibration as a function of temperature has been performed.

Systems and methods for processing data according to exemplaryembodiments of the present invention can be performed by one or moreprocessors executing sequences of instructions contained in a memorydevice. Such instructions may be read into the memory device from othercomputer-readable mediums such as secondary data storage device(s).Execution of the sequences of instructions contained in the memorydevice causes the processor to operate, for example, as described above.In alternative embodiments, hard-wire circuitry may be used in place ofor in combination with software instructions to implement the presentinvention. Such software may run on a processor which is housed withinthe device, e.g., a 3D pointing device or other device, which containsthe sensors or the software may run on a processor or computer housedwithin another device, e.g., a system controller, a game console, apersonal computer, etc., which is in communication with the devicecontaining the sensors. In such a case, data may be transferred viawireline or wirelessly between the device containing the sensors and thedevice containing the processor which runs the software which performsthe bias estimation and compensation as described above. According toother exemplary embodiments, some of the processing described above withrespect to bias estimation may be performed in the device containing thesensors, while the remainder of the processing is performed in a seconddevice after receipt of the partially processed data from the devicecontaining the sensors.

Although the foregoing exemplary embodiments relate to sensing packagesincluding one or more rotational sensors and an accelerometer, biasestimation techniques according to these exemplary embodiments are notlimited to only these types of sensors. Instead bias estimationtechniques as described herein can be applied to devices which include,for example, only accelerometer(s), optical and inertial sensors (e.g.,a rotational sensor, a gyroscope or an accelerometer), a magnetometerand an inertial sensor (e.g., a rotational sensor, a gyroscope or anaccelerometer), a magnetometer and an optical sensor, or other sensorcombinations. Additionally, although exemplary embodiments describedherein relate to bias estimation in the context of 3D pointing devicesand applications, such techniques are not so limited and may be employedin methods and devices associated with other applications, e.g., medicalapplications, gaming, cameras, military applications, etc.

The above-described exemplary embodiments are intended to beillustrative in all respects, rather than restrictive, of the presentinvention. Thus the present invention is capable of many variations indetailed implementation that can be derived from the descriptioncontained herein by a person skilled in the art. For example, althoughthe foregoing exemplary embodiments describe, among other things, theuse of inertial sensors to detect movement of a device, other types ofsensors (e.g., ultrasound, magnetic or optical) can be used instead of,or in addition to, inertial sensors in conjunction with theafore-described signal processing. All such variations and modificationsare considered to be within the scope and spirit of the presentinvention as defined by the following claims. No element, act, orinstruction used in the description of the present application should beconstrued as critical or essential to the invention unless explicitlydescribed as such. Also, as used herein, the article “a” is intended toinclude one or more items.

1. A device comprising: at least one sensor for sensing rotation of saiddevice about a first axis and generating at least one first outputassociated therewith and for sensing rotation of said device about asecond axis and generating at least one second output associatedtherewith; an accelerometer for sensing an acceleration of said deviceand outputting at least one third output associated therewith; atemperature sensor for sensing a temperature of said device andoutputting at least one temperature output associated therewith; and aprocessing unit for determining a bias estimate associated with said atleast one sensor using: (a) a first bias estimate technique forgenerating first bias estimate data based upon determining whether saiddevice is stationary using said at least one first, second and thirdoutputs; (b) a second bias estimate technique for generating second biasestimate data based upon detection of a pitch of said device using saidat least one first, second and third outputs; (c) a third bias estimatetechnique for generating third bias estimate data based upon slew-ratefiltering using said at least one first and second outputs; and (d) afourth bias estimate technique for generating fourth bias estimate databased upon said temperature output and said at least one first andsecond outputs.
 2. The device of claim 1, wherein said sensed rotationof said device involves at least one of: an angular velocity, an angularrate, and an angular position of said device.
 3. The device of claim 1,wherein said bias estimate is associated with a non-zero value outputfrom said at least one sensor when said device is stationary.
 4. Amethod for estimating bias associated with a sensor comprising:estimating said bias associated with said sensor using at least a firstbias estimating technique to generate a first bias estimate and a secondbias estimating technique to generate a second bias estimate.
 5. Themethod of claim 4, wherein said first bias estimate and said second biasestimate are associated with a non-zero value output from said sensorwhen an object to which said sensor is attached is stationary.
 6. Themethod of claim 4, further comprising: combining said first biasestimate and said second bias estimate to generate an output biasestimate.
 7. The method of claim 4, further comprising: selecting one ofsaid first bias estimate and said second bias estimate to generate anoutput bias estimate.
 8. The method of claim 4, wherein said first biasestimating technique generates said first bias estimate based upondetermining whether a device within which said sensor is located isstationary.
 9. The method of claim 8, wherein said first bias estimatingtechnique determines that said device is stationary when peak-to-peakvalues received from said sensor are less than a predeterminedthreshold.
 10. The method of claim 4, wherein said first bias estimatingtechnique generates said first bias estimate based upon detection of apitch of a device within which said sensor is located.
 11. The method ofclaim 4, wherein said first bias estimating technique generates saidfirst bias estimate based upon detection of a change in angle of saiddevice relative to one of a plurality of different axes.
 12. The methodof claim 10, wherein said first bias estimating technique calculates adifference between a first change of elevation angle determined usingdata output from said sensor and a second change of elevation angledetermined using data output from another sensor.
 13. The method ofclaim 12, wherein said sensor is an accelerometer and said anothersensor is a sensor which measures rotation of said device about an axis.14. The method of claim 10, wherein said first bias estimate isdetermined over a variable time window, said variable time windowvarying based upon measurement noise associated with data generated bysaid sensor.
 15. The method of claim 10, wherein said first biasestimating technique operates in one mode to generate said first biasestimates as individual data points which converge over time.
 16. Themethod of claim 10, wherein said first bias estimating techniqueoperates in one mode to generate said first bias estimates using a lineintersection technique associated with two individual bias estimates bycombining two measurements of biases of pitch angular rates at twodifferent roll angles.
 17. The method of claim 10, wherein said firstbias estimating technique operates in one mode to generate said firstbias estimates by mapping averaged values output by said sensor into abias of a yaw angular rate and a bias of a pitch angular rate defined ina user frame of reference.
 18. The method of claim 10, wherein saidfirst bias estimating technique operates in one of three modes togenerate said first bias estimates including: (a) a first mode forgenerating said first bias estimates as individual data points whichconverge over time; (b) a second mode to generate said first biasestimates using a line intersection technique associated with twoindividual bias estimates; and (c) a third mode for generating saidfirst bias estimates by mapping averaged values output by said sensorinto a bias of a yaw angular rate and a bias of a pitch angular ratedefined in a user frame of reference.
 19. The method of claim 18,wherein said first bias estimating technique operates in said third modeif (a) a measurement error variance associated with said first biasestimate is smaller than a first predetermined threshold, (b) a timewindow size over which said first bias estimate is calculated is smallerthan a second predetermined threshold, and (c) a difference between aroll angle measured in a current time window and a roll angle measuredin a previous time window is smaller than a third predeterminedthreshold.
 20. The method of claim 18, wherein said first biasestimating technique operates in said second mode if (a) a differencebetween a roll angle measured in a current time window and a roll anglemeasured in a previous time window is greater than a first predeterminedthreshold and (b) a time gap between a current time window and aprevious time window is shorter than a predetermined amount of time.21-65. (canceled)